package com.fyh.service;

import com.fyh.entity.chat.SimpleContact;
import com.fyh.entity.community.PostVO;
import com.fyh.entity.community.ReplyVO;
import com.fyh.entity.job.DeliveryRecord;
import com.fyh.entity.user.SimpleCandidate;
import com.fyh.entity.user.User;
import com.fyh.entity.user.UserLogin;
import com.fyh.entity.user.Vitae;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

public interface UserService {

    /**
     * 登录
     * @param userLogin
     * @return
     */
    UserLogin login(UserLogin userLogin);

    /**
     * 注册
     * @param user
     * @return
     */
    String register(User user);

    /**
     * 获取用户信息
     * @param id
     * @Return
     */
    User getUserInfo(Long id);

    /**
     * 获取技能标签列表
     * @return
     */
    Map<String, List<String>> getTagList();

    /**
     * 获取用户名
     * @param id
     * @return
     */
    String getNickname(Long id);

    /**
     * 更新用户信息
     * @param user
     */
    void update(User user);

    /**
     * 上传头像
     * @param file
     */
    String uploadAvatar(MultipartFile file);

    /**
     * 获取应聘者简历
     * @param userId
     * @return
     */
    Vitae getUserVitae(Long userId);

    /**
     * 获取求职者基础信息列表
     * @param deliveryRecordList
     * @return
     */
    List<SimpleCandidate> getSimpleCandidateList(List<DeliveryRecord> deliveryRecordList);

    /**
     * 获取求职者基础信息
     * @param userId
     * @return
     */
    SimpleCandidate getSimpleCandidate(Long userId);

    /**
     * 登出
     * @param userId
     */
    void logout(Long userId);

    /**
     * 补全联系人头像路径和用户在线状态
     * @param simpleContactList
     * @return
     */
    List<SimpleContact> getContactListAvatarPath(List<SimpleContact> simpleContactList);

    /**
     * 补全用户昵称和用户头像文件路径（用于帖子列表）
     * @param postVOList
     * @return
     */
    List<PostVO> selectNicknameAndAvaterPathForPost(List<PostVO> postVOList);

    /**
     * 补全用户昵称和用户头像文件路径（用于回复列表）
     * @param replyVOList
     * @return
     */
    List<ReplyVO> selectNicknameAndAvaterPathForReply(List<ReplyVO> replyVOList);
}
